<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    /*
        1.基本使用
            - 抛出错误,需要用catch捕获
     */
    let p1 = new Promise((resolve, reject) => reject(Error('foo')));
    let p2 = new Promise((resolve, reject) => {
        throw Error('foo');
    }).catch(console.log);
    let p3 = Promise.resolve().then(() => {
        throw Error('foo');
    });
    let p4 = Promise.reject(Error('foo'));
    setTimeout(console.log, 0, p1); // Promise <rejected>: Error: foo 报错,下面也是
    setTimeout(console.log, 0, p2); // Promise <rejected>: Error: foo 
    setTimeout(console.log, 0, p3); // Promise <rejected>: Error: foo 
    setTimeout(console.log, 0, p4); // Promise <rejected>: Error: foo

    /*
        2.抛出错误并不会阻止程序运行
     */
    // 2.1 不会执行
    // throw Error('foo')
    // console.log('bar')  // 这一行不会执行
    
    // 2.2 可以打印执行,错误只能通过catch捕获
    Promise.reject(Error('foo'));
    console.log('bar');
    // bar

</script>
</body>
</html>